/*
 * IconoFileChooser.java	
 *
 * Copyright 2008 Universidad Francisco de Paula Santander (UFPS).
 * Todos los Derechos Reservados.
 * Creado el 07/10/08, 02:23:38 AM
 */

package com.ufps.cuatro.util;

import java.io.File;
import javax.swing.Icon;
import javax.swing.filechooser.FileView;

/**
 * <i><b>IconoFileChooser:</b></i> Provee la capacidad de desplegar iconos
 * definidos por la aplicación.
 *
 * @author  Carlos A. Torres C. - Dolly E. Guerrero. <https://code.google.com/p/tesis4dor/>
 * @version 1.0 07/10/08
 * @see FileView
 */
public class IconoFileChooser extends FileView{

    private Icon icono;
    private String strExt;
    private String strInfo;
    

    /**
     * Constructor por defecto.
     */
    public IconoFileChooser() {
        this.icono = Utileria.leerIconoApp(Utileria.MODO_16x16);
        this.strExt = "4dor";
        this.strInfo = "Archivo Cuatro";
    }

    /**
     * Constructor que inicializa parametros.
     * @param icono @DefinicionParametro
     * @param strExt @DefinicionParametro
     * @param strInfo @DefinicionParametro
     */
    public IconoFileChooser(Icon icono, String strExt, String strInfo) {
        this.icono = icono;
        this.strExt = strExt;
        this.strInfo = strInfo;
    }

    @Override
    public String getDescription(File f) {
        return super.getDescription(f);
    }

    @Override
    public Icon getIcon(File f) {
      try{
        String extension = getExtension(f);
        if (extension != null) {
            if(extension.equals(strExt))
                return icono;
        }
        return null;
    }catch(java.lang.NullPointerException ex){}
      return null;
    }

    @Override
    public String getName(File f) {
        return super.getName(f);
    }

    @Override
    public String getTypeDescription(File f) {
      try{
        String extension = getExtension(f);
        String type = "";
        if (extension != null) {
            if(extension.equals(strExt)) {
                return this.strInfo;
            }
            else if (extension.equals(ImageFilter.jpeg) ||
                extension.equals(ImageFilter.jpg)) {
                type = "JPEG Image";
            } else if (extension.equals(ImageFilter.gif)){
                type = "GIF Image";
            } else if (extension.equals(ImageFilter.tiff) ||
                       extension.equals(ImageFilter.tif)) {
                type = "TIFF Image";
            } else if (extension.equals(ImageFilter.png)){
                type = "PNG Image";
            } else if (extension.equals(ImageFilter.dor)){
                type = "Archivo 4dor";
            } else if (extension.equals(ImageFilter.lib)){
                type = "Archivo 4lib";
            } else if (extension.equals(ImageFilter.jar)){
                type = "Archivo Jar";
            }


        }
        this.strInfo = type;
        return strInfo;
    }catch(java.lang.NullPointerException ex){}
      return "";
    }

    @Override
    public Boolean isTraversable(File f) {
        return super.isTraversable(f);
    }

    private String getExtension(File f) {
        String ext = null;
        String s = f.getName();
        int i = s.lastIndexOf('.');
        if (i > 0 && i < s.length() - 1) {
            ext = s.substring(i+1).toLowerCase();
        }
        return ext;
    }
}
